package cn.cyber.wxfire.service;

import cn.cyber.wxfire.entity.AccessToken;
import cn.cyber.wxfire.http.WXHttpResult;
import com.dtflys.forest.annotation.*;

import java.util.Map;

/**
 * @author gjn
 * @since 2021/9/18 0:36
 */

/**
 * @BaseRequest 为配置接口层级请求信息的注解，
 * 其属性会成为该接口下所有请求的默认属性，
 * 但可以被方法上定义的属性所覆盖
 */
@BaseRequest(
        baseURL = "https://api.weixin.qq.com/cgi-bin"    // 默认域名
)
public interface WXService {
    /**
     * 获取 Access Token
     * @param clientCredential  获取 access_token 填写 client_credential
     * @param appId             第三方用户唯一凭证
     * @param appSecret         第三方用户唯一凭证密钥
     * @return
     */
    @Get(url = "/token")
    AccessToken getAccessTokenStrFromServer(
            @Query("grant_type") String clientCredential,
            @Query("appid") String appId,
            @Query("secret") String appSecret
    );

    /**
     * 获取菜单
     * @param accessToken
     * @return
     */
    @Get(url = "/get_current_selfmenu_info")
    Map<String, Object> getMenuFromServer(@Query("access_token") String accessToken);

    /**
     * 创建菜单
     * @param accessToken
     * @param menu
     * @return
     */
    @Post(url = "/menu/create")
    WXHttpResult setMenuFromServer(@Query("access_token") String accessToken, @JSONBody String menu);

    /**
     * 删除菜单
     * @param accessToken
     * @return
     */
    @Get(url = "/menu/delete")
    WXHttpResult delMenuFromServer(@Query("access_token") String accessToken);
}
